#include <bits/stdc++.h>
using namespace std;
int N,K;

int arr[10][10];
int vis[10][10]={0};
int dx[8]={-1,-1,0,1,1,1,0,-1};//nnd  找个图比划比划
int dy[8]={0,1,1,1,0,-1,-1,-1};
int vis2[10][10][10][10]={0};

bool dfs(int i,int j,int target,string& s)
{
    if(i==N-1 &&j==N-1 &&s.size()==N*N-1)
    {
        return true;
    }

    for(int k=0;k<8;k++)
    {
        int x=i+dx[k],y=j+dy[k];
        if(x>=0 &&x<N &&y>=0 &&y<N && arr[x][y]==target && vis[x][y]==0 && vis2[i][y][x][j]==0 &&vis2[x][j][i][y]==0)
        {
            //cout<<x<<" "<<y<<endl;
            vis[x][y]=1;
            vis2[i][j][x][y]=1;
            //cout<<k<<" ";
            s+=k+'0';
            //cout<<s<<endl;
            if(dfs(x,y,(target+1)%K,s))
            {
                //cout<<s<<endl;
                return true;
            }
            else
            {
                vis[x][y]=0;
                vis2[i][j][x][y]=0;
                s.pop_back();

            }



        }
    }
    return false;


}
int main()
{
  cin>>N>>K;
  for(int i=0;i<N;i++)
  {
      for(int j=0;j<N;j++)
      {
          cin>>arr[i][j];
      }
  }
  if(arr[0][0]!=0)
  {
      cout<<-1;
      return 0;
  }
  string s;
  vis[0][0]=1;
  
  
  if(dfs(0,0,1,s))
  {
      cout<<s;
  }
  else
  {
      cout<<-1;
  }
  
  return 0;
}